//---------------------------------------------------------------------------------
// Copyright (c) 2011, Microsoft Corporation
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//---------------------------------------------------------------------------------

namespace Microsoft.ServiceBus.Samples
{
    using System.Management.Automation;          // Windows PowerShell namespace.
    using Microsoft.ServiceBus.Messaging;
    
    public class ServiceBusCmdletBase : PSCmdlet
    {
        const string PathSeparator = "\\";

        MessagingFactory factory;

        public MessagingFactory Factory
        {
            get 
            {
                if (factory == null || factory.IsClosed)
                {
                    PSVariable psVariable = this.SessionState.PSVariable.Get("MessagingFactory");
                    if (psVariable == null)
                    {
                        factory = Context.GetMessagingFactory(this.SessionState);
                        this.SessionState.PSVariable.Set("MessagingFactory", factory);
                    }
                    else
                    {
                        factory = (MessagingFactory)psVariable.Value;
                    }
                }

                return factory; 
            }            
        }
    }
}
